import numpy as np
import open3d as o3d
from matplotlib import pyplot as plt

# “取高程信息并根据高程值渲染热力图”是指从点云数据中提取每个点的高度（z坐标），然后根据这些高度值生成一个热力图，以可视化不同高度区域的分布情况。
pcd = o3d.io.read_point_cloud("../datasets/standford_cloud_data/gargo50K.pcd", print_progress=True)
points = np.asarray(pcd.points)
# ------------------------------用来计算Z值取值范围------------------------------
zdist = points[:, 2]
# ----------------------------使用伪颜色对点云进行渲染---------------------------
zhot_colors = plt.get_cmap('hot')(  # hot表示为热力图
    (zdist - zdist.min()) / (zdist.max() - zdist.min()))
zhot_colors = zhot_colors[:, :3]
pcd.colors = o3d.utility.Vector3dVector(zhot_colors)
o3d.visualization.draw_geometries([pcd], window_name="热力图渲染赋色",
                                  width=800, height=600,
                                  left=50, top=50)
